﻿using System.ComponentModel.DataAnnotations;
using EFDataModel;

/// <summary>
/// Prüfen ob der User schon existiert und wenn ja False zurückgeben
/// http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
/// http://devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2
/// http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
/// Remote Validation: http://highoncoding.com/Articles/767_Remote_Validation_in_ASP_NET_MVC_3.aspx
/// 
/// Beispieleinbung als Atributt:
/// [CheckUserExists(ErrorMessageResourceName = "UserExistsErrorRESX", ErrorMessageResourceType = typeof(SystemMessages))]
/// </summary>
public class CheckUserExistsAttribute : ValidationAttribute
{
    /// <summary>
    /// Prüfen ob der User schon existiert und wenn ja False zurückgeben
    /// </summary>
    /// <returns>TRUE->User Exists | FALSE->User existiert noch nicht</returns>
    public override bool IsValid(object value)
    {
        //Prüft ob der User schon existiert, beim Anlegen eines Neuen Users, daher muss wenn der 
        //Account gefunden wird False zurück gegeben werden und nicht true.
        if (EFUser.CheckUserExists(value as string, CurrentHttpContext.GetDataModel()))
        {
            return false;
        }

        return true;
    }
}
